	.EQU KBWAIT		679CH
	.ORG 0038H


INTERRUPCION1:	DI 
				PUSH AF
				PUSH BC		
				PUSH DE
				PUSH HL
				PUSH IX
				PUSH IY
				CALL KBWAIT
				POP IY
				POP IX
				POP HL
				POP DE
				POP BC
				POP AF
				EI
				RETI



		.EQU	HORAS		0602H
		.EQU	MINUTOS		0601H
		.EQU	SEGUNDOS	0600H
		.EQU	APDIS		67D6H
		.EQU	POSCUR		664CH
		.EQU	ENCPRT		6677H
		.EQU	READKB		50H
		.EQU	STATUS		01H
		.EQU 	DATA		00H
		.ORG	0100H



				
RE:	
		IM 1
		EI
		CALL	APDIS
		LD	SP,057FH
		LD	A,00H
		LD	(SEGUNDOS),A
		LD	(MINUTOS),A
		LD	(HORAS),A
MAIN:	CALL	MOSTRAR
		CALL	DELAY
		CALL	DELAY
		CALL	DELAY
		CALL 	STOPRESET
INCREMENTARM:	CALL	INCREMENTAR
		JP	MAIN

; Mostrar horas, minutos y segundos
MOSTRAR:	LD	A,04H
		CALL	POSCUR
		LD	A,(SEGUNDOS)
		CALL	ENCPRT
		LD	A,02H
		CALL	POSCUR
		LD	A,(MINUTOS)
		CALL	ENCPRT
		LD	A,00H
		CALL	POSCUR
		LD	A,(HORAS)
		CALL	ENCPRT
		RET
		
DELAY:		LD	C,0FFH
LOOP1:		LD	B,0FFH
LOOP2:		DEC	B
		JP	NZ,LOOP2
		DEC	C
		JP	NZ,LOOP1
		RET	

INCREMENTAR:	LD	A,(SEGUNDOS)
		ADD	A,1
		DAA
		CP	60H
		JP	Z,INCMIN
		LD	(SEGUNDOS),A
		RET

INCMIN:		LD	A,00H
		LD	(SEGUNDOS),A
		LD	A,(MINUTOS)
		ADD	A,1
		DAA
		CP	60H
		JP	Z,INCHORAS
		LD	(MINUTOS),A
		RET

INCHORAS:	LD	A,00H
		LD	(MINUTOS),A
		LD	A,(HORAS)
		ADD	A,1
		DAA
		CP	24H
		JP	Z,INCMIN
		LD	(HORAS),A
		RET
		
		LD	A,00H
		LD	(HORAS),A
		RET



STOP:	LD	A,READKB
		OUT	(STATUS),A
		IN	A,(STATUS)
		AND 	7
		JP	Z,STOP
		IN	A,(DATA)
		AND 3FH
		CP 	1
		JP 	Z,INCREMENTARM
		


STOPRESET:	LD 	A,READKB
		OUT	(STATUS),A
		IN	A,(STATUS)
		AND	7
		JP	Z,INCREMENTARM
		IN	A,(DATA)
		AND 3FH
		CP 	1
		JP	Z,INCREMENTARM
		CP	2
		JP	Z,STOP
		CP	3
		JP	Z,RE
		RET